#include<stdio.h>
#include<stdlib.h>


typedef struct   // 顺序表的定义
{
    int* R;  // 表基址
    int length;
}SSTable;

void initTable(SSTable* table)   // 顺序表的初始化
{
    int* temp=(int*) malloc(11*sizeof(int));

    int index=11;
    for(int i=1;i<11;i++)
    {
        temp[i]=index++;
    }
    temp[0]=0;
    table->R=temp;
    table->length=11;
}

int search(SSTable* table,int data)
{
    table->R[0]=data;    // 设置哨兵结点减少代码执行次数
    int i;
    for(i=table->length-1;table->R[i]!=data;i--);
    return i;
}

int SearchBin(SSTable* table,int data)
{
    // 折半查找法
    int low=1;
    int high=table->length;
    while(low<=high)
    {
        int mid=(low+high)/2;
        if(table->R[mid]==data)
            return mid;
        if(table->R[mid]<data)
        {
            low=mid+1;
        }
        else
            high=mid-1;
    }
    return 0;
}

void showResult(int x)
{
    if(x!=0)
        printf("查找成功 位置为%d\n",x);
    else
        printf("查找失败\n");
}

void main()
{
    SSTable table;
    initTable(&table);
    for(int i=0;i<table.length;i++)
        printf("%d\n",table.R[i]);
    int x=search(&table,19);
    showResult(x);
    x=SearchBin(&table,15);
    showResult(x);
}